Conventional display devices (e.g., Cathode Ray Tube (CRT), Liquid Crystal Displays (LCD), Light Emitting Diode (LED), Organic LED (OLED), Active-Matrix OLED (AMOLED), etc.) operate at fixed refresh rates such as 60 Hz, 85 Hz, or 120 Hz. In other words, the display device is configured to refresh each of the pixels of the screen at a specific frequency. In conventional systems, the video signal transmitted to the display device must match the fixed frequency of the display device's refresh rate. Some display devices enable the fixed frequency refresh rate to be changed based on a configuration setting of the display device, but once that setting is changed, each frame received by the display device is drawn to the screen at that fixed frequency. However, a graphics processing unit (GPU) may generate frames of pixel data at a variable rendering rate that is asynchronous with the fixed refresh rate of the display device.
For example, when a display device is operating at 60 Hz, the pixels of the display will be refreshed every 16.6 ms. However, each frame may take a variable amount of time to be rendered by the GPU so while one frame may take 12 ms to render, another frame with more complicated geometry may take 30 ms to render. Thus, completely rendered frames may not be ready in the frame buffer when the next frame needs to be output to the display device via a video interface. In this case, the previous image needs to be repeated in part or completely, which can cause image artifacts. For example, image tearing may occur if the image being output to the display device is switched part way through the frame (V-SYNC Off). Conversely, image stuttering may occur if the image being output to the display device is only switched between frames, thereby causing some frames to be repeated and/or causing some frames to be skipped (V-SYNC On).
Newer display devices may be configured to operate synchronously with the GPU utilizing a dynamic refresh frequency. For example, some monitors may be compatible with NVIDIA's G-SYNC™ technology that enables the display device to synchronize the refresh of pixel elements for displaying a frame with the variable rendering rate of the GPU. The GPU is configured to transmit frames of pixel data to the display device via the video interface immediately after the frame has been rendered, and the display device is configured to refresh the pixels of the display device in response to receiving the frames of pixel data rather than at a fixed frequency refresh rate. In other words, the refresh rate of the display device is not fixed at a particular frequency, but instead adjusts dynamically to the rate image data is received from the GPU.
As long as the GPU renders frames of image data at a reasonably fast rendering rate, the types of image artifacts associated with conventional systems may be reduced. However, in some cases, the GPU may have trouble rendering particular frames in a reasonable amount of time due to the complexity of a scene. For example, a particular frame of pixel data may take, e.g., 100 ms to be rendered, which corresponds to a dynamic refresh frequency of 10 Hz for that particular frame. The effective refresh rate of the monitor when there are large delays between successive frames may cause issues.
For example, most image display technologies (e.g., LCD panels) have a lower and upper bound refresh frequency at which the display can reproduce an image with maximum quality. When the displays were driven at a fixed frequency refresh rate, this operational restriction was easy to meet because the fixed refresh frequency could be selected within the lower and upper bounds of the display. However, when using a variable refresh rate technology, such as NVIDIA's G-SYNC™ technology, the GPU may require a variable and unpredictable amount of time to generate the next image data for display. The amount of time required to generate the next frame of image data for display can be larger than the amount of time available while staying above the minimum refresh frequency requirements of the display.
Further complicating the refresh operation when variable refresh technology is used is display of a cursor (e.g., mouse pointer) as an extra layer over the image that is rendered by the GPU. When a user moves the mouse, the mouse cursor on the screen should update with a high enough refresh rate to ensure an interactive experience. When a fixed frequency refresh rate is used the cursor is simply composited or overlaid with the image that is displayed (either a new image or a repeated image). In a variable refresh rate environment, updating the cursor only when a new image is generated by the GPU may not provide an interactive experience. For example, if the GPU produces new images at 10 Hertz, then the cursor response will be sluggish. Alternatively, if the display device is refreshed whenever the mouse position changes (by overlaying the cursor on a repeated image), then the cursor controlled refreshes may delay the display of a new image, resulting in visual stutter. Without taking into account the critical nature of the timing at which the display device is refreshed, the asynchronous nature of mouse movements compared to the render rate of the GPU can result in serious visual flicker. Thus, there is a need for addressing these issues and/or other issues associated with the prior art.